from turtle import Screen, Turtle, mainloop#导入turtle库中的三个函数
class ColorTurtle(Turtle):#定义一个类，参数是导入的Turtle函数
    def __init__(self, x, y):#类的初始化方法
        Turtle.__init__(self)#方法中调用自己的初始化方法
        self.shape("turtle")#设置画笔形状为一只海龟
        self.resizemode("user")#调整小海龟外观
        self.shapesize(3,3,10)#设置小海龟的宽度，长度，边线宽度
        self.pensize(10)#设置画笔宽度
        self._color = [0,0,0]#设置类的私有变量为一个列表，用于后面红绿蓝对应
        self.x = x
        self._color[x] = y#设置参数x和y相对应
        # 设置画笔初始状态
        self.color(self._color)#设置画笔颜色
        self.speed(0)
        self.left(90)
        self.pu()
        self.goto(x,0)
        self.pd()
        self.sety(1)
        self.pu()

        self.sety(y)#只修改y坐标，为输入参数
        self.pencolor("gray25")#画笔颜色
        self.ondrag(self.shift)#设置拖动事件调用shift函数
    #拖动事件处理的函数
    def shift(self, x, y):
        self.sety(max(0,min(y,1)))#设置纵坐标始终在0-1的范围内
        self._color[self.x] = self.ycor()#把拖动后改变的y值更新到对应的x
        self.draw()
    def draw(self):
        Turtle.circle(self._color, 360)

        # self.fillcolor(self._color)#设置填充色为更改后的颜色
        # setbgcolor()#调用函数改变背景色
# def setbgcolor():#定义设置背景颜色的方法
    # screen.bgcolor(red.ycor(), green.ycor(), blue.ycor())#背景色，三个参数分别表示红，绿，蓝的y坐标,通过y的变化改变背景色
def main():
    global screen, red, green, blue#定义全局变量
    screen = Screen()
    screen.delay(0)#设置绘制的时候无延迟
    screen.setworldcoordinates(-1, -0.3, 3, 1.3)#设置画布左下角和右上角的点坐标
    #分别设置红绿蓝三个初始位置
    red = ColorTurtle(0, .5)
    green = ColorTurtle(1, .5)
    blue = ColorTurtle(2, .5)
    # setbgcolor()#调用设置背景的函数

    draw()
    #写标题模块
    writer = Turtle()
    writer.ht()#隐藏画笔
    writer.pu()#抬起画笔
    writer.goto(1,1.15)#移动
    writer.write("Python实验一修改，体验turtle编程",align="center",font=("微软雅黑",25,("bold","italic")))#设置标题名称，中心对齐，字体，大小，形状等
    return "EVENTLOOP"#输出事件结束
#当文件运行的时候，执行函数main,同时输出，当以文件以模块导入的时候就不执行
if __name__ == "__main__":
    msg = main()
    print(msg)
mainloop()#启动事件循环，窗口保持不关闭状态